UML 统一建模语言入门介绍

UML(Unified Modeling Language)是一套由 OMG 标准化的通用可视化建模语言,用于规约、构造和文档化软件系统的结构与行为。当前最新正式版本为 UML 2.5.1(2017),共包含 14 种图。

三剑客(Three Amigos):UML 由 Grady Booch、James Rumbaugh、Ivar Jacobson 三位方法学大师在 1994–1997 年间融合各自方法论而成。

2. UML 历史

2.1 起源:三剑客汇合(1994-1995)

人物方法特点
Grady BoochBooch 方法强调类与对象,面向设计
James RumbaughOMT(对象建模技术)强调分析与数据建模
Ivar JacobsonOOSE(面向对象软件工程)强调用例驱动

2.2 标准化之路(1996-1997)

  1. 三人融合各自方法,发布 UML 0.9 / 0.91。
  2. 1996 年 Rational 牵头成立 UML 联盟,DEC、HP、IBM、Microsoft、Oracle 等加入。
  3. 1997 年 1 月提交 UML 1.0 给 OMG(对象管理组织)。
  4. 1997 年 11 月 OMG 采纳 UML 1.1 作为首个正式标准。

2.3 UML 1.x 迭代(1998-2003)

版本年份关键变化
UML 1.11997首个 OMG 正式标准
UML 1.21998细节修正
UML 1.31999引入扩展机制(stereotype / tagged value)
UML 1.42001加入 action semantics
UML 1.52003完善 action 语义模型

2.4 UML 2.0:重大变革(2005)

2.5 后续演进与统一

版本年份关键变化
UML 2.1.x2007修正与微调
UML 2.22009结构重新组织
UML 2.32010细化改进
UML 2.4.12011Bug 修复
UML 2.52015Infrastructure 与 Superstructure 合并回单一规范,简化建模
UML 2.5.12017当前最新正式版
UML History Timeline
UML 版本演进时间线(思维导图)

2.6 官方文档

3. 14 种图分类

UML 2.5.1 的 14 种图分为结构图(描述系统静态结构)和行为图(描述系统动态行为)两大类:

UML 14 Diagrams Classification
UML 14 种图分类总览

4. 结构图(Structure Diagrams)

结构图不考虑时间维度,描述系统在某一时刻的静态构成。

4.1 类图(Class Diagram)— 最核心的结构图

描述系统中的类、接口、协作及其关系(继承、关联、聚合、组合、依赖)。是面向对象建模的基石。

Class Diagram Example
示例:订单系统核心类图

4.2 对象图(Object Diagram)

类图的实例化快照——展示某一时刻对象间的连接关系。用于举例说明类图。

Object Diagram Example
示例:张三的订单 #1001 对象图

4.3 包图(Package Diagram)

将模型元素按包组织,展示包之间的依赖和包含关系。用于宏观架构分层。

Package Diagram Example
示例:MVC 架构包图

4.4 组件图(Component Diagram)

展示软件组件之间的组织和依赖,强调接口的提供与消费。适合描述微服务拓扑。

Component Diagram Example
示例:电商系统组件图

4.5 复合结构图(Composite Structure Diagram)

描述类或组件的内部结构(Parts),以及各部件之间的协作连接。侧重内部协作关系。

Composite Structure Diagram Example
示例:订单服务的内部结构

4.6 部署图(Deployment Diagram)

展示软件制品(artifact)部署到硬件节点(node)上的物理拓扑。运维和架构师常用。

Deployment Diagram Example
示例:三层架构物理部署图

4.7 剖面图(Profile Diagram)

UML 的扩展机制——通过 stereotype、tagged value、constraint 定义领域特定建模扩展。

Profile Diagram Example
示例:定义 EJB Profile

5. 行为图(Behavior Diagrams)

行为图描述系统随时间变化的动态行为。

5.1 用例图(Use Case Diagram)

从用户视角描述系统提供的功能(用例)及参与者与系统之间的交互。需求阶段首选工具。

Use Case Diagram Example
示例:在线商城用户用例图

5.2 活动图(Activity Diagram)

流程图的高级形式,支持分支、并发、泳道。适合描述业务流程和算法步骤。

Activity Diagram Example
示例:用户下单活动图(带泳道)

5.3 状态机图(State Machine Diagram)

描述对象在其生命周期中经历的状态序列及触发状态转移的事件。适合订单、工单等有明确状态的对象。

State Machine Diagram Example
示例:订单生命周期状态机

5.4 序列图(Sequence Diagram)

按时间顺序展示对象间的消息交互。UML 中最常用的行为图,适合描述 API 调用链、微服务交互。

Sequence Diagram Example
示例:用户下单完整序列图

5.5 通信图(Communication Diagram)

与序列图语义等价,但强调对象间的拓扑连接关系而非时间顺序。是序列图的"空间视图"。

Communication Diagram Example
示例:下单流程通信图

5.6 交互概览图(Interaction Overview Diagram)

活动图与序列图的混合体——用活动图节点嵌入子序列图。适合宏观业务流程串联。

Interaction Overview Diagram Example
示例:售后处理流程交互概览图

5.7 时间图(Timing Diagram)

展示对象状态随时间的变化曲线,带有精确的时间刻度。适合实时系统、协议时序分析。

Timing Diagram Example
示例:门禁控制器信号时序图

6. 工具生态

工具类型特点
PlantUML文本驱动代码即图,Git 友好,免费开源
Enterprise Architect重量级 IDE完整 UML + SysML + BPMN,工业级
StarUML桌面工具轻量美观,多平台
draw.io在线/离线快速绘制,免费
Visual Paradigm全功能支持从建模到代码生成
推荐组合:PlanUML 做设计文档(文本即代码,可 git diff)+ draw.io 做临时草图。

7. 与其他建模语言对比

7.1 OMG 系(UML 近亲)

语言定位特点
SysML系统工程建模UML 的扩展子集,适合硬件、软件、流程混合系统
SysML v2下一代系统工程文本+图形双表示,更强语义,正在替代 SysML v1
BPMN业务流程建模专注业务流程图,支持可执行流程
SoaML面向服务架构服务识别、规约与编排建模
UPDM / UAF军事/企业架构覆盖作战能力、人员、资源等超宽维度

7.2 形式化方法系

语言定位特点
TLA+ / PlusCal分布式系统验证Leslie Lamport 设计,Amazon/MongoDB 用于核心算法验证,可数学证明系统正确性
Alloy轻量形式化规约MIT 出品,基于关系逻辑,适合结构约束检查
Z notation形式化规约基于集合论与谓词逻辑,工业级形式化
Event-B / Rodin逐步精化建模从抽象到具体逐层精化系统
Coq / Isabelle定理证明辅助证明框架,编译器验证等场景

7.3 架构描述语言(ADLs)

语言定位特点
AADL嵌入式实时系统装配/飞机/汽车,直接对接时序、容错、硬件绑定分析
C4 Model轻量架构可视化Context → Container → Component → Code 四层分层
ArchiMate企业架构建模与 TOGAF 配套,业务/应用/技术三层
4+1 View Model架构视图Kruchten 提出:逻辑/开发/进程/物理 + 场景

7.4 领域特定建模语言

语言领域特点
Petri Nets并发/离散事件数学建模工具,Petri 网分析有界性/活性等
Statecharts状态与行为David Harel 提出,UML 状态机图的原型
ER 图 / IDEF1X数据建模数据库设计的核心呈现方式
Simulink / Modelica物理系统仿真控制工程、多物理域建模

8. UML 的定位

8.1 不可替代性

8.2 领域制高点

场景最优选择理由
通用软件建模UML覆盖面广,最通用
复杂分布式系统验证TLA+数学证明,UML 无此能力
系统工程(软硬融合)SysML v2远超 UML 的系统工程能力
嵌入式实时系统AADL直接对接时序分析和硬件绑定
企业架构建模ArchiMate业务到技术全栈,TOGAF 配套
业务流程BPMN专用流程,可执行
并发系统分析Petri Nets严格的数学分析能力

8.3 结论

UML 是最通用的,但并非每个维度都是最强的。
维度排序
通用性UML > SysML > ArchiMate > C4
形式化验证能力TLA+ ≈ Coq ≈ Alloy > Event-B > Z > UML(无)
系统工程深度SysML v2 ≈ AADL > UML
企业架构宽度UAF > ArchiMate > UML

UML 的定位是建模语言的"通用语"——说的人最多、场景最广,而不是每个细分领域的性能冠军。选择建模语言应遵循"够用即为最优"原则:系统越复杂、安全要求越高,越倾向形式化方法;系统越通用、团队越大,越倾向 UML。